package csel.model;

import java.util.List;

import csel.model.areaeffect.AreaEffect;
import csel.model.entity.Entity;
import csel.model.items.Item;

public interface Tile
{
	/* TODO: INCOMPLETE INTERFACE */
	
	public boolean canEnter(MobileObject obj, BlockNotifier bn);

	public void enter(Entity e);

	public void enter(Projectile p);

	public boolean canLeave(MobileObject obj);

	public void leave(Entity e);

	public void leave(Projectile p);

	public void accept(TileVisitor tv); // tv... hahaha...

	public List<Projectile> getProjectiles();

	public Item getItem();

	public void setItem(Item setItem);

	public Decal getDecal();

	public void setDecal(Decal decal);

	public Location getLocation();

	public void setLocation(Location location);

	public AreaEffect getAreaEffect();

	public void setAreaEffect(AreaEffect ae);

	public Terrain getTerrain();

	public void setTerrain(Terrain terrain);

	public Tile getNeighbor(Direction direction);
	
	public Entity getEntity();
	
	public Map getMap();
	
	public void clearEntity();
		
}
